The invention relates to target emulation technologies. More specifically, the invention relates to target emulation and testing storage area networks in a multi-port testing environment.
“SCSI” (Small Computer System Interface) is an industry standard for connecting peripheral devices and their controllers to an initiator (n.wikipedia.org/wiki/SCSI). A SCSI device is usually a peripheral (for example, a hard disk drive) that responds to an operation requested by a SCSI “initiator,” which is usually the host system. SCSI peripherals are “targets,” but for some commands, the SCSI peripheral may need to act temporarily as an initiator.
“Fibre Channel” is another industry standard (n.wikipedia.org/wiki/Fibre_channel). Logically, the “Fibre Channel” is a bidirectional, full-duplex, point-to-point, serial data channel structured for high performance data communication. Physically, the Fibre Channel is an interconnection of multiple communication ports interconnected by 1) a switching network (a “fabric”), 2) a point-to-point link, or 3) an arbitrated loop. Fibre Channel is a generalized transport mechanism that has no protocol of its own or native input/output command set but can transport any existing Upper Level Protocols (“ULPs)” such as Asynchronous Transfer Mode (“ATM”), Internet Protocol (“IP”), and SCSI. Commonly, Fibre Channel refers to a serial computer bus intended for connecting high speed SCSI storage devices to computers in a Storage Area Network (“SAN”).
A Logical Unit Number (“LUN”) is a SCSI identifier within a target assigned to each Fibre Channel accessible disk that allows the host system to address and access data on the target devices. One physical SCSI hard disk drive can be subdivided into multiple LUNs.
The most common way to test Fibre Channel devices, and other network devices, that address multiple disk drives is to create a test environment that contains multiple physical disk drives. For example, if a lab needed to test a Fibre Channel device that claimed to be able to address a varying amount of disk drives, each with different parameters, the lab's test engineers would need to physically assemble a large number of disk drives or “scratch disks” for use in testing. Furthermore, to determine how the device would react to adverse conditions such as bad drives, labs would maintain some set of faulty disk drives to enable this level of testing to occur. Such an environment is expensive and time-consuming to set up.
There have been some attempts to solve the problem of providing an environment for testing disk drives in a storage area network. Fibre Channel bus analyzer products, if properly programmed, can emulate a single drive. Other software products can serve virtual disks intended for permanent data storage.
There are several problems with these approaches. One problem is time and money. Setting aside a large amount of Fibre Channel disk drives for testing and development purposes can cost a significant amount of money. Configuring these resources into different configurations to allow for testing of multiple scenarios takes lab time and effort. Physically connecting and changing drive configurations can quickly take considerable time and resources of lab personnel.
Another problem is the lack of reliable error and fault testing. With physical disks, it is difficult to find and keep an inventory of “bad” drives with predictable behavior and then configuring them into test systems. Yet it is important for device vendors to be able to test their devices against disks with known bad conditions. The ability to inject specific types of disk errors into a test environment is missing in the prior art.
Another problem is the lack of controllable environment variables. For example, to test a device, a tester may want to test 40 disk drives, then 20 minutes later have 10 of the disks fail or go away, then 5 minutes later add the disks back into the test. This example could represent a situation where power is lost to the 10 drives and later restored.
A solution to these problems is a storage emulation device for testing a network. The emulation device emulates disk drives (external devices) for read/write performance testing environments and requires no initiator-side software changes. For the testing embodiment, the system reduces the need to deploy large amounts of expensive physical “scratch” disks by providing high performance, non-volatile, virtual disk media. The software includes predefined tests for performance, stability, MaxLUN, exception, and read/write/fault insertion allowing a Fibre Channel device to be tested as if the device were attached to a large array of physical disks. A web-based graphical user interface (GUI) allows a tester to configure, reconfigure, inject errors, and monitor from a remote client computer. The emulation device can be a rack-mounted unit that has ports for connecting to a storage area network, random access memory for storing emulated target disk drives, and a processor.
In a test environment, to test the bandwidth of an external device, such as a fibre-channel switch, it is necessary to send and receive real data through the switch at full bandwidth on every port. But when operating in a large SAN with multiple clients connected to multiple ports, or at high network bandwidths, a bottleneck exists when moving data from wire to RAM, due to the aggregation of bandwidths as data moves closer to memory. This is especially true when a test is designed to run each port at its maximum bandwidth. A storage emulation device allows passing of data only to the limit of the ability of the test system's internal data bus to move data to memory or storage.
Data bus bandwidth is a problem when testing large storage area networks. For example, if a storage emulation device can receive data on 12 wires with each wire having a bandwidth of 400 MB/sec, then the total throughput is 4.8 GB/sec. This is a problem if a storage emulation device bandwidth is considerably less than 4.8 GB/sec. Such a device is not useful for organizations with a large SAN and that transmit enormous amounts of data.